<header>
    单一的神经元
</header>
<h2>
    主体思路
</h2>
<p>
    模型如下：
</p>
<img src="./images/neural-network/model-single.png">
<p>
    x1、x2、x3分别表示三个输入，y是输出，通过三个输入的权重w1、w2、w3求和得到一个中间值，然后输入到激活函数中得到一个输出值。
</p>
<p class="warn">
    温馨提示：当然，实际输入和权重等的个数可以调整，这里只是方便说明举的一个例子。
</p>
<p>
    最终，我们根据这个值来进行决策。
</p>
<h2>
    激活函数
</h2>
<p>
    什么是激活函数？就是在人工神经网络的神经元上运行的函数，负责将神经元的输入映射到输出端。
</p>
<p>
    简单的理解就是：一个函数，其输出值明确的告诉我怎么决策。
</p>
<p>
    比如我们上面的例子中的输入x1、x2、x3是影响是否下雨的三个因素，w1、w2、w3是对应因素的影响力，那么我们可以规定一个函数，输入是中间值，输出是下雨的概率（0～1），比如使用sigmoid函数作为激活函数就很合适：
</p>
<img src="./images/sigmoid.png">
<p class="warn">
    温馨提示：sigmoid函数可以作为激活函数，但激活函数不一定要用sigmoid函数，如果合适的话，什么函数都可以。
</p>
<p>
    如果输入x1、x2、x3和权重w1、w2、w3确定了，就可以很容易得到明天下雨的概率。输入肯定根据采集获得，那权重怎么确定？
</p>
<h2>
    如何训练模型？
</h2>
<p>
    确定权重的过程其实就是训练模型的过程。大体思路如下：
</p>
<ol>
    <li>
        一开始的时候，随机给一个权重；
    </li>
    <li>
        使用以前的数据（明确的输入输出），输入多组x1、x2、x3来计算输出，根据计算的输出和实际的输出的差异对权重进行调整；
    </li>
    <li>
        不停的重复第二步，直到权重的值稳定下来，便完成了训练，即权重w1、w2、w3确定了。
    </li>
</ol>
<p class="warn">
    温馨提示：对权重进行调整的目的就是让计算的输出和实际的输出差异缩小。
</p>
<p>
    可以想到，权重不一定会稳定下来，如果没有稳定下来，因素有很多，而我们首先需要思考的是调整权重的策略是否过于激进了，导致每次调整的时候总是在实际值上下跳来跳去而不是一点点靠近。
</p>
<p>
    当然，太保守也不行，靠近的太慢了，所以如何调整非常依赖经验和数学知识。
</p>
<h2>
    补充
</h2>
<p>
    显然，一个神经元是不可能预测天气的，怎么办？就需要用多层神经网络或者更特殊的神经网络模型，不过，无论多复杂的模型，基本的思想都可以进行一定的归纳：
</p>
<ol>
    <li>
        设计一个模型和一些系数；
    </li>
    <li>
        系数开始初始化，然后使用已知数据训练调整系数；
    </li>
    <li>
        输入求解。
    </li>
</ol>